/*
 * @Author: Seven
 * @Date: 2021-11-30 14:58:38
 * @LastEditors: Seven
 * @LastEditTime: 2022-05-12 17:29:02
 * @FilePath: \bnch-admin\src\plugins\web3.js
 * @Description: web插件
 */
import Web3 from "web3";
export default {
    install: (app, options) => {
        let web3 = (() => {
            let web3Provider;
            if (window.ethereum) {
                web3Provider = window.ethereum;
                try {
                    // 请求用户授权 tips:这里fature改动：https://eips.ethereum.org/EIPS/eip-1102; 改成通过eth_requestAccounts获取授权
                    (async () => {
                        await window.ethereum.enable()
                    })();
                } catch (error) {
                    //用户不授权时，这里处理异常情况，同时可以设置重试等机制
                    console.log(error)
                } 
            } else if (window.web3) { // 老版 MetaMask Legacy dapp browsers...
                web3Provider = window.web3.currentProvider;
            } else {
                // 这里处理连接在不支持dapp的地方打开的情况
                web3Provider = new Web3.providers.HttpProvider('https://eth-testnet.tokenlon.im');
                console.log("Non-Ethereum browser detected. You should consider trying MetaMask!")
                //这种情况下表示用户在不支持dapp的浏览器打开，无法初始化web3
                //这里一般的处理逻辑是：使用fixedWeb3.vue中的那种自己初始化，获得区块上的基础数据，但是没法获取用户的账户信息
                //或者直接提示错误，不进行任何处理
            }
            return new Web3(web3Provider) || {};
        })()
        app.prototype.$web3 = {
            web3,
        }
        app.directive('init-web3', {
            created(el, binding, vnode, oldVnode) {

            }
        })
        app.mixin({
            methods: {

            }
        })
    }


}